<!DOCTYPE html>
<html>

<head>
    <meta charset="utf-8">
    <title>菜鸟教程(runoob.com)</title>
</head>

<body>

    <h2>JavaScript Class Gettter/Setter</h2>

    <p>很多开发者在属性名称前使用下划线字符 _ 将 getter/setter 与实际属性分开。</p>

    <p id="demo"></p>
    <p id="demo2"></p>

    <script>
        /* 
        getter 和 setter
            类中我们可以使用 getter 和 setter 来获取和设置值，getter 和 setter 都需要在严格模式下执行。
            getter 和 setter 可以使得我们对属性的操作变的很灵活。
            类中添加 getter 和 setter 使用的是 get 和 set 关键字。

            注意：即使 getter 是一个方法，当你想获取属性值时也不要使用括号。
                getter/setter 方法的名称不能与属性的名称相同，在本例中属名为 sitename。
                很多开发者在属性名称前使用下划线字符 _ 将 getter/setter 与实际属性分开：
                以下实例使用下划线 _ 来设置属性，并创建对应的 getter/setter 方法.
        */
        class Runoob {
            constructor(name) {
                this._sitename = name;
            }
            get sitename() {
                return this._sitename;
            }
            set sitename(x) {
                this._sitename = x;
            }
        }

        let noob = new Runoob("菜鸟教程");
//      get方法
        document.getElementById("demo").innerHTML = noob.sitename;
//      set方法
        noob.sitename = "韩佳乐";
        document.getElementById("demo2").innerHTML = noob.sitename


    </script>

</body>

</html>